import {
	defineStore
} from "pinia";

export const useUserStore = defineStore("user", {
	state: () => ({
		userInfo: {},
		token: ""
	}),

	// 计算属性（类似 Vue 的 computed，缓存结果）
	getters: {},

	// 方法（类似 Vue2 的 methods，处理业务逻辑）
	actions: {
		// 修改状态（支持同步/异步）
		setUser(value) {
			// 直接通过 this 访问 state
			// 简单数据类型、复杂数据类型，直接修改都能触发响应式
			this.userInfo = value;
		},
		// 异步示例（如获取用户数据）
		async getUserInfo() {
			// // 模拟接口请求
			// const res = await uni.request({
			// 	url: "/api/getUserInfo",
			// 	method: "get"
			// })
			// if (res.data.code === 200) {
			// 	this.token = res.data.token; // 直接修改 token
			// 	this.setUser(res.data.userInfo); // 调用其他 action
			// }
		}
	}
});

// 使用方式
// 1. 引入 store
// import { useUserStore } from "@/store/modules/user.js";
// 2. 创建 store 实例
// const userStore = useUserStore();

// 3. 直接使用状态/方法
// 方式1：批量修改（推荐，保持响应式）
// userStore.$patch({
//   userInfo: {...},
//   token: "..."
// });

// 方式2：通过 action 修改（复杂逻辑）
// userStore.setUser({...});

// const login = async () => {
//   await userStore.getUserInfo();
// }